home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-07-07 | 3.0 KB | 77 lines | [TEXT/ZBAS] |
- 'SWStandardProcs.txt by Robert Hommel
- '© Copyright 1994
- 'All rights granted for any use whatsoever
-
- 'This file contains the standard movement and time task procedures for
- 'FBSpriteWorld. Since there is no easy way to place ENTERPROC/EXITPROC
- 'procedures in an Include file, you should copy and paste these
- 'procedures into your MAIN program file.
-
- 'NOTE: You should always paste the "SWTimeTask" procedure in your
- 'MAIN file. You should paste one or both standard movement procs
- 'in your MAIN file if you have Sprites that use them to define their
- 'movement characteristics.
-
- 'Disclaimer: I've tested these routines quite thoroughly on my Mac
- 'LC running System 7.01 and FB 1.02c. I make no promises or warranties
- 'of any kind.
- '*********************************************************************
-
- '------------------------ SPRITEWORLD PROCS --------------------------
-
- "SWBounceMoveProc"
- ENTERPROC(SWPtr&,spritePtr&,curRectPtr&)
- 'standard bounce movement proc. Keeps sprite inside sprite boundsRect
-
- LONG IF curRectPtr&.left%+spritePtr&.xDelta%<=spritePtr&.sBoundsRect.left%
- spritePtr&.xDelta%=spritePtr&.xDelta%*-1
- XELSE
- LONG IF curRectPtr&.right%+spritePtr&.xDelta%>=spritePtr&.sBoundsRect.right%
- spritePtr&.xDelta%=spritePtr&.xDelta%*-1
- END IF
- END IF
- LONG IF curRectPtr&.top%+spritePtr&.yDelta%<=spritePtr&.sBoundsRect.top%
- spritePtr&.yDelta%=spritePtr&.yDelta%*-1
- XELSE
- LONG IF curRectPtr&.bottom%+spritePtr&.yDelta%>=spritePtr&.sBoundsRect.bottom%
- spritePtr&.yDelta%=spritePtr&.yDelta%*-1
- END IF
- END IF
- EXITPROC
- RETURN
-
- "SWWrapMoveProc"
- ENTERPROC(SWPtr&,spritePtr&,curRectPtr&)
- 'standard wrap movement proc. Sprite wraps within sprite boundsRect
-
- LONG IF curRectPtr&.right%+spritePtr&.xDelta%<=spritePtr&.sBoundsRect+_left%
- curRectPtr&.right%=spritePtr&.sBoundsRect.right%+(curRectPtr&.right%-curRectPtr&.left%)
- curRectPtr&.left%=spritePtr&.sBoundsRect.right%
- XELSE
- LONG IF curRectPtr&.left%+spritePtr&.xDelta%>=spritePtr&.sBoundsRect+_right%
- curRectPtr&.left%=spritePtr&.sBoundsRect.left%-(curRectPtr&.right%-curRectPtr&.left%)
- curRectPtr&.right%=spritePtr&.sBoundsRect.left%
- END IF
- END IF
- LONG IF curRectPtr&.bottom%+spritePtr&.yDelta%<=spritePtr&.sBoundsRect+_top%
- curRectPtr&.bottom%=spritePtr&.sBoundsRect.bottom%+(curRectPtr&.bottom%-curRectPtr&.top%)
- curRectPtr&.top%=spritePtr&.sBoundsRect.bottom%
- XELSE
- LONG IF curRectPtr&.top%+spritePtr&.yDelta%>=spritePtr&.sBoundsRect+_bottom%
- curRectPtr&.top%=spritePtr&.sBoundsRect.top%-(curRectPtr&.bottom%-curRectPtr&.top%)
- curRectPtr&.bottom%=spritePtr&.sBoundsRect+_top%
- END IF
- END IF
- EXITPROC
- RETURN
-
- "SWTimeTask"
- 'Sets the frameTTHasFired or moveTTHasFired field of the sprite record
- 'to _zTrue (-1). Called by the Time Manager if frameTimeInterval or
- 'moveTimeInterval field of sprite record > 0.
-
- ` move.w #-1,tmXQSize(a1) ;[move|frame]TTHasFired=_zTrue
- ` rts ;return
-
-
-